%!TEX root = tesis-header.tex
% En esta sección se describen los elementos necesarios para crear un videojuego

\section{Requerimientos Generales}

A continuación se presentan los requerimientos generales que se utilizaron para el desarrollo de este proyecto y las herramientas particulares que se emplearon para satisfacerlos.

\begin{itemize}
	\item Equipo de Computo con tarjeta aceleradora de gráficos 3D
	\item Amplia documentación de como se puede hacer un videojuego
	\item Compilador de C++
	\item Modelador 3D
	\item Motor de render gráfico
	\item Motor de Inteligencia Artificial
\end{itemize}

El compilador de C++ elegido es GCC, que puede ser usado para cualquier plataforma, basada en sistemas UNIX, Windows. La ventaja principal de este compilador respecto a otros como: Visual C++, Intel o Borland; es que, siendo software de código abierto y disponible para todas las plataformas, el código del proyecto puede ser portado con mayor facilidad.

Un modelador 3D, es un software que permite crear mallas tridimensionales\footnote{El proceso de modelado de personajes tiene mayor relación con la parte artística de este proyecto y será explicada más adelante} que luego deben ser incluidas dentro del motor de juegos para controlar los eventos donde participan. Para este trabajo de tesis se usaron los modeladores 3D Studio Max, Blender 3D y Maya, que cuentan con extensiones o plugins adecuados para exportar las mallas creadas a las escenas desarrolladas por el motor de juegos.

Para la realización de este proyecto se requieren modelos tridimensionales de los personales, una historia bien estructurada así como un compilador de C/C++ en alguna de las siguientes plataformas: Windows, Linux o Mac 


Existen muchas alternativas de motores gráficos disponibles, entre ellas:

\begin{itemize}
	\item Crystal Space 3D. Conjunto de herramientas de desarrollo de software de visualización 3D, enfocado al desarrollo de juegos de video de código abierto, que puede usarse con el modelador Blender 3D.
	
	\item XNA. Microsoft ofrece este conjunto de herramientas integradas a su entorno de desarrollo .Net para juegos de video.
	
	\item OGRE. No es un motor de juegos propiamente, esta enfocado a escenas 3D. Es un conjunto de librerías escritas en C++ con el propósito de administrar los recursos gráficos de la computadora.
\end{itemize}

Debido a que OGRE no es un motor de juegos, puede ser manejado con mayor versatilidad, pudiéndose utilizar para resolver problemas generales involucrados en el desarrollo del motor de juegos. Su versatilidad es una ventaja y desventaja al mismo tiempo, debido a que, siendo un software dedicado solamente a los gráficos, deben de usarse librerías externas para cualquier otra característica que se desee utilizar, como la entrada y salida de comandos, inteligencia artificial o interfaz gráfica de usuario. Esto dificulta el uso de OGRE, ya que se debe aprender a usar estas librerías externas e investigar sus características de forma individual. Pero estas características permiten mayor versatilidad a la hora de desarrollar un motor de juegos personalizado, como es el caso de este proyecto.

OGRE se eligió también por la amplia documentación disponible, tanto en fuentes impresas y principalmente en Internet, lo que facilita la implementación de las características que se planearon.

Para este trabajo de tesis se eligió una plataforma basada en UNIX, debido a que las librerías gráficas para esta plataforma se pueden utilizar en otros sistemas operativos, a diferencia de las librerías gráficas nativas de Windows por ejemplo. Particularmente se utilizó el sistema operativo Mac OS X, debido al software de desarrollo disponible para esta plataforma y tomando en cuenta que la mayoría de las librerías de desarrollo pueden ser instaladas en él.



